home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Linux Cubed Series 7: Sunsite
/
Linux Cubed Series 7 - Sunsite Vol 1.iso
/
system
/
news
/
readers
/
skim-0.8
/
skim-0
/
skim-0.8.4
/
README
< prev
next >
Wrap
Text File
|
1996-02-18
|
50KB
|
1,204 lines
SKIM version 0.8.4
by
Rene W.J. Pijlman
<R.W.Pijlman@inter.NL.net>
February 18, 1996
+---------------------------------------+
| This README contains the installation |
| instructions and a user's guide. |
+---------------------------------------+
INTRODUCTION
Skim is a graphical offline newsreader for Linux. Skim is designed to minimize
the on-line time when it's used over a slow modem line (e.g. 14K4 Slip/PPP).
To use skim, you need access to a news server which supports both the standard
NNTP protocol (RFC 977) and the XOVER extension. See also the CONFIGURATION
section.
Skim has both a command line interface (skim) and a graphical interface (xskim).
How does skim reduce the connect time?
1) Initially you use skim to fetch only the relevant header lines of the
articles. Skim uses the relatively efficient News OverView (NOV) database
of your news server. Skim does not automatically fetch complete articles,
complete headers or a list of all newsgroups like many other newsreaders
do.
2) When fetching subjects or selected articles, skim starts multiple parallel
sessions with the news server to saturate the communication channel.
3) Skim does not need a connection with the newsserver while you are
skimming and selecting subject lines.
How to get started:
1) Read the INSTALLATION section, and do what it says.
2) Read the CONFIGURATION section, and do what is says.
3) Read the GETTING STARTED section, and do what it says.
4) Read the USER'S GUIDE, and do what it says.
If you have questions about skim, or suggestions for improvement, or when you
have problems installing it please post to comp.os.linux.networking. When the
word "skim" is in the subject there's a good chance that I'll read it, since
this is in my AutoSelect pattern.
When you think you've found a bug, mail the information to me. Be specific.
List version numbers, error messages etc. But please understand that I cannot
provide support and assistance to all users of skim. In general it is better
to first discuss the problem in comp.os.linux.networking, since someone may
already have found a solution or workaround.
"... And remember: if you don't like the news, go out and make some of
your own."
-- "Scoop" Nisker, KFOG radio reporter
Preposterous Words
SYSTEM REQUIREMENTS
Skim is distributed as a set of C sources, shell scripts and Tcl/Tk scripts.
I developed and tested it on an ELF system based on the Red Hat 2.1 distribution
with a 1.3 development kernel and libc 5.0.x. Since the skim distribution
contains only source files, you should be able to build skim on an older a.out
system with libc 4.7.x, but I did not, cannot and will not verify this.
xskim requires Tcl 7.4 and Tk 4.0. I don't think xskim will work with older
versions.
The Makefile uses the extensions of GNU make. I don't think it will work with
a traditional version of make.
The table below lists the software that skim requires and the version of the
software that I used for development and testing.
Package: Required version: Version used when
developing skim:
----------------------------------------------------------------------
Linux kernel 1.3.42 (ELF)
gcc 2.7.0 (ELF)
libc 5.0.9 (ELF) containing
GNU rx-0.07.1.
Tcl (*) 7.4 7.4.0 (ELF)
Tk (*) 4.0 4.0 (ELF)
make GNU Make version 3.74
bash GNU bash, version 1.14.5(1)
sed GNU sed version 2.05
grep GNU grep version 2.0
cat,sort GNU textutils 1.13
touch,cp,rm,mv GNU fileutils 3.12
find GNU find version 4.1
m4 GNU m4 1.4
(*) You need Tcl and Tk only when you want to use the graphical
interface (xskim).
CHANGES
0.8.2 -> 0.8.4
- Integrated changes from Joel Young <jdyoung@erinet.com> and fixed some
problems to make xskim work with Tcl 4.7 and Tk 4.0. TclX is no longer
required. I don't think xskim can still be used with older versions of
Tcl/Tk.
- Skim now automatically saves the changes in the subject list when you
leave a newsgroup. The button "Save Changes" has disappeared.
- Skim now automatically saves the changes in an article when you leave
the article edit window.
- In xskim you can now use the right mouse button to select/unselect
the selected subjects. Click <Left button><Right button> to
select/unselect one subject. You no longer need to move the mouse
to the Select/Unselect buttons.
- Skim no longer terminates whenever the news server returns an error.
For example, when an article that you had selected is no longer
available on the news server, skim now issues a warning and continues
normally. The old behavior confused many users, since an error in one
newsgroup would prohibit skim from fetching subjects or articles in an
unpredictable subset of the remaining newsgroups.
- It appears that the GNU regular expression matching functions in
libc 5.0.9 are unstable. When the regular expressions are large and
complex core dumps occur in re_compile_pattern(). For this reason,
skim now uses POSIX regular expression matching instead. Skim now
interprets AutoSelect and Kill patterns as POSIX Extended Regular
Expressions.
Unfortunately, this change may affect your AutoSelect and Kill patterns.
The GNU implementation of the POSIX function regcomp() uses an excessive
amount of memory for large regular expressions. I may change the
implementation again in a future version.
- The installation procedure now gives step-by-step instructions. Just
type 'make' to get started.
- When skim constructs a reply to an article which already has a
'References:' header line, skim now appends the message ID of the
article at the end of the 'References:' line as required by RFC-1036.
Previously, skim put the elements of the 'References:' line in the
wrong order.
- Skim now correctly handles folded header lines as required by RFC-822.
- When skim gets the full name or the email address of the author from
the "From:" header line, it now removes an empty trailing pair of
brackets. For example, when the "From:" header line says
"foo@bar.org ()", skim converts it to "foo@bar.org".
- By default, skim no longer includes a "Path:" header line in the articles
it constructs. Skim now recognizes the environment variable SKIMPATH.
When skim constructs a new article or a reply, the value of SKIMPATH is
entered in the "Path:" header line. When SKIMPATH is not defined, skim
does not include a "Path:" header line. The use of SKIMPATH is not
recommended, since the "Path:" header line is best left to the news
server.
- Skim now includes the "Date:" and "Lines:" header line in the articles
it constructs as required by RFC-1036. These header lines are
automatically updated when skim posts an article.
- Skim is now more strict when it posts an article. It updates some
headerlines ("Date:" and "Lines:"), it fixes some headerlines that the
user may have damaged (e.g. "From:") and it rejects an article when a
mandatory headerline is missing (e.g. "Subject:"). The article which is
kept in $SKIMDIR/posted is an exact copy of the article that was posted
by skim.
- Skim now sorts the newsgroups in $SKIMDIR/Admin/AllNewsGroups. This
makes the .diff much more useful, especially when you change to another
news server.
- You can now set the environment variable SKIMLENGTHLINES. This
determines the number of digits in the "number of lines" column
in the header lines.
- Minor changes to the README and the user interface.
0.8.1 -> 0.8.2
- Fixed a core dump which could occur with version 0.8.1 when you performed
'skim subjects' and when you pressed the 'Get New Subjects' button in
xskim.
0.6 -> 0.8.1
- Older versions of skim fetched only the Subject header line, and you had
to select articles based on the subject alone.
Skim now also fetches the Author (from the From header line) and the
Lines header line (which tells you the number of lines in the article).
AutoSelect and Kill patterns are supported on the Author field.
- Skim now uses the `XOVER' NNTP-extension instead of `XHDR'. XOVER is
an NNTP-extension for access to the News OverView (NOV) database. This
is becoming a defacto standard for accessing header information via NNTP.
It is theoretically possible that skim no longer works for some people
(if your news server supports XHDR, but not XOVER). Sorry about that.
- The file format of the files in $SKIMDIR/Subjects has changed. When you
use the command line interface, you can no longer select subjects by
inserting a space or a TAB on the first position. Instead you must
change the '-' on the first position to a '+'.
- xskim now uses a fixed font in the subject selection window to preserve
the tabular layout of the header lines.
- Skim now uses pseudo-threading. Pseudo-threading means bringing related
subjects together by sorting the subject lines (ignoring the "Re: "
prefix).
- Drastically reduced the overhead of subject fetching on the client
platform. Both the number of processes created and the amount of
file system I/O is reduced. Sorting (for pseudo-threading) is done
efficiently in memory.
- When skim calls m4 to preprocess a pattern file, it will first change
it's working directory to the directory with the pattern file. Skim
version 0.6 ran in your home directory, and used the -I option of m4 to
find the include files in the pattern directory. Unfortunately, this
could cause m4 to include files in your home directory instead of a file
with the same name in your pattern directory. I've added some notes to
the USER'S GUIDE section to clarify how you can specify the location of
include files.
- In AutoSelect and Kill patterns, the interval operator ('{' and '}')
didn't work. This is fixed now. But please note that the pattern
"{,2}" doesn't work as expected. Use "{0,2}" instead.
- Implemented a kludge for the INN news server. In some circumstances INN
requires the newsreader to issue the non-NNTP "mode reader" command to
start talking NNTP. This is explained in the INN FAQ. Skim now sends the
"mode reader" command when you append ":inn" to the hostname in
NNTPSERVER. You don't normally need to use this workaround.
0.4 -> 0.6
- Skim supports regular expressions to automatically select and kill
subjects. When you define your regular expressions carefully, you will
spend less time skimming subjects.
When you use this new functionality, you must have the GNU m4
preprocessor.
- When the environment variable SKIMEDITOR is set, xskim will use the
user-defined editor instead of the builtin editor to edit new articles
and replies.
- Skimming articles in xskim can now be done with one mouse click per
article, instead of three. In this way you will spend less time skimming
articles. The following changes were made to make this possible:
* The command 'skim delete' and the 'Delete Article' button in xskim no
longer physically remove the article file, but move it to
$SKIMDIR/Deleted. Xskim no longer asks for confirmation when you press
'Delete Article'.
* Introduced the command 'skim keep' and the button 'Keep Article' in
xskim to move article files to $SKIMDIR/Kept.
* Xskim automatically advances to the next article when you press
'Delete article' or 'Keep article'.
* The files in $SKIMDIR/Deleted are physically removed by the command
'skim cleanup', which does ask for confirmation.
- Performance improvements:
* Skim builds it's index files much faster when performing 'skim articles'
and 'skim indexes'.
* When skim performs 'skim articles' (when you press the button 'Get
Selected Articles') skim no longer creates a session with the news
server when no articles are selected in a group.
- Some minor improvements in xskim:
* more descriptive labels on the buttons.
* The current article is highlighted when skimming articles.
* The current newsgroup is shown in the window title.
- Resolved an installation problem with xskim. The wish interpreter no
longer needs to be in /usr/local/bin. It may be anywhere in your PATH.
- Xskim now recognizes selected subjects as skim does (1 or more spaces or
TABs starting at the first position).
- Skim no longer uses fixed size buffers which may have caused it to crash
when encountering very long lines.
- Some minor changes in the installation procedure.
0.1 -> 0.4
- Integrated a graphical interface for skim contributed by Christoph
Neerfeld. This was originally released as a separate package called
skim_tcl. The graphical interface has been renamed to xskim and it is
now integrated in the skim package. Both the command line interface
(skim) and the graphical interface (xskim) will be supported in future
releases (if any :-) ).
- The README now describes both the command line interface (skim) and the
graphical interface (xskim).
- The number of parallel connections to the NNTP server is now
configurable by means of the environment variable SKIMPROCESSES. The
default is 4. Set this to a higher number if you think this will improve
the utilization of your dialup line. Set this to a lower number (e.g. 1)
when either your machine or the news server is overloaded, or when your
news server limits the maximum number of concurrent connections per
client IP address.
This change is a considerable performance improvement when you are
subscribed to many newsgroups. Older versions of skim overloaded the
client and the news server with one concurrent process per newsgroup.
- The Makefile and the installation procedure now assume that skim is
unpacked in /usr/src and the executables are installed in /usr/bin.
You must now be root to install skim, therefore. Also, you must
remove the executables which the Makefile of skim 0.1 installed in
$HOME/bin.
- Implemented 'skim newsgroups', which delivers a list of all valid
newgroups in $SKIMDIR/Admin/AllNewsGroups. This command is not yet
supported by the graphical interface (xskim).
- Added the command 'skim delete ArticleFile' to delete an article and
also update skim's index files. You should no longer use the 'rm'
command to remove an article.
- Added the command 'skim indexes' to completely regenerate all of skim's
index files. You don't normally need to use this command. Should skim's
index files ever get out of date (for example, when you use the file
manager or the 'rm' command to remove an article file, instead of using
'skim delete'), you can use the command 'skim indexes' to regenerate the
index files.
- Implemented 'skim version' to print the version of skim on standard
output.
- Fixed bug with TAB representation which caused skim not to fetch articles
which were selected by inserting a TAB (inserting spaces did work).
- Allow comment lines in SubscribedNewsGroups: lines with '#' on the
first position are ignored.
- The command 'skim replyto' now expects to find the articles in
$SKIMDIR/Articles. It used to rely on the current working directory.
- skim now preceeds your ~/.signature with a line with two dashes and a
space ("-- "). This is a standard which is recognized by many
newsreaders. I'm not sure if this is an 'official' standard.
- Fixed bug in 'skim newarticle'. The shell reported an error
'Ambiguous redirect'.
- Fixed bug in NewArticle and ReplyTo. When these scripts were called
from the command line, the shell reported a syntax error. Now the
scripts report an error, since you're not supposed to call them from
the command line :-).
- xskim now also supports the default value ~/Skim for the environment
variable SKIMDIR. It used to raise an error when SKIMDIR was not
defined.
- xskim now also uses the optional environment variable SKIMORGANIZATION
when constructing a new article.
- xskim no longer requires the environment variable SKIMREPLYTO when
constructing a new article. This variable is optional.
- xskim now updates the "Groups" list after "Get New Subjects" is performed.
- xskim no longer raises an error when you double click the left mouse
button or click "Okay" in an empty "Post file" window.
- xskim no longer raises an error when you click the left mouse button
in an empty "Groups" list in the "Subjects" windows.
- xskim no longer raises an error when you click the left mouse button in
an empty Subjects list in the Articles window.
- xskim now asks for confirmation when you click the "Cleanup" button.
- xskim no longer asks for confirmation when you click the "Get Selected
Articles" button.
- xskim now asks if you want to save the changes when you leave the Subject
selection window.
- xskim is no longer confused by articles which contain the string
"Subject:".
- When you click the "Articles" button, xskim shows only the groups in
which there actually are articles present. It used to show all groups
the user is subscribed to. Also, xskim constructs the group list much
faster by using index files.
- skim moved to sunsite.unc.edu:/pub/Linux/system/News/readers.
- My e-mail address has changed.
KNOWN BUGS
- AutoSelect and Kill patterns for the Author field are matched after
truncation of the Author field. This causes your patterns to depend on
the current value of $SKIMLENGTHAUTHOR.
- Unselecting subjects in xskim appends the subjects to the end of the list,
not in the right pseudo-thread. I don't think I will fix this, since I'd
rather spend my time on real threading.
WISH LIST
- Filter crosspostings.
- Support for pure NNTP servers and servers with only the XHDR extension.
- Button to move a file back from skipped to subjects.
- "Kill subject/author in this/all newsgroup" buttons.
- Optionally show/don't show the header lines in an article.
- Support options to change fonts in xskim.
- A better way to set skim options. There are too many environment
variables already.
- Don't remove unselected subjects on 'skim articles'. Provide an explicit
'catchup' command/button instead. Automatically remove the subjects which
are no longer available on the news server, using the first/last article
number information from the server.
- Hotkeys in xskim.
- Allow the user to read and select subjects or articles while skim is
busy fetching things from the news server.
- Split up the README. Write manual pages or documentation in HTML.
- Organize the sources in a directory structure, with hierarchical
makefiles. Object files in a library.
- Support (un)subscribing to newsgroups in the graphical interface.
- Support the command 'skim newsgroups' in the graphical interface.
- Support maintenance of Kill patterns and AutoSelect patterns in the
graphical interface.
- Support Undelete article in the graphical interface.
- Show more clearly when xskim is busy and when it is finished.
How about a per-newsgroup progress indicator.
- Support "Reply by e-mail" and "CC to poster by email".
- Transparent compression and decompression of local articles.
- Script to make newsbatch for rnews.
- More functionality for managing articles.
- Automatic uudecode/uuencode.
- Implement hook somewhere to support automatic dialup and hangup in
order to minimize the connect time.
- Support for multiple servers.
- Check if all required software is present.
COPYRIGHT
skim - Offline news reading package optimized for slow lines.
Copyright (C) 1996 Rene W.J. Pijlman
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
CREDITS
Changes for Tcl 4.7 and Tk 4.0 came from Joel Young <jdyoung@erinet.com>.
Some other people have send me diffs for these versions as well, but I
lost them when I run some experimental script as root :-(
The graphical interface (now called xskim) was contributed by Christoph
Neerfeld <chris@apouni.meb.uni-bonn.de>. I've made many changes to it
since the first release.
VERSION
Skim version 0.8.4.
$Header: /home/rene/sys/CVS_MasterSourceRepository/skim/README,v 1.16 1996/02/18 11:40:21 rene Exp $
INSTALLATION
1) Login as root.
2) Put skim-0.8.4.tgz in /usr/src.
3) Unpack:
cd /usr/src
tar xfz skim-0.8.4.tgz
4) Build and install:
make
And follow the step-by-step instructions. Basically, these instructions
tell you to do:
make depend
make all
make test
make install
and optionally
make clean
UNINSTALLATION
To uninstall skim do:
cd /usr/src/skim-0.8.4
make uninstall
CONFIGURATION
Mandatory steps:
1) Set the environment variable NNTPSERVER in your .profile. It must
contain the host name of your NNTP news server.
2) Set the environment variable SKIMFROM in your .profile. It must
contain your name and E-mail address, in one of the formats allowed
by RFC-1036. Examples of all valid formats are:
R.W.Pijlman@inter.NL.net
R.W.Pijlman@inter.NL.net (Rene Pijlman)
Rene Pijlman <R.W.Pijlman@inter.NL.net>
Don't forget to put double quotes around these strings in your .profile,
since they contain spaces.
3) Make sure that the following directories are in your PATH:
- /bin
- /usr/bin
- The directory containing the `wish' interpreter of Tcl/Tk. This
is typically /usr/bin or /usr/local/bin.
Optional steps:
4) Optionally set the environment variable SKIMDIR in your .profile. It
must contain the location of the directory structure which skim will
create. When SKIMDIR is not defined, skim will create the directory
structure in ~/Skim.
5) Optionally set the environment variable SKIMREPLYTO in your .profile.
If you do, it must contain your name and E-mail address in the same
format as described above for SKIMFROM. The SKIMREPLYTO variable will
cause a 'Reply-To:' line to be included in the articles which skim
creates for you. See RFC-822 for the semantics of this line.
6) Optionally set the environment variable SKIMORGANIZATION in your
.profile. This will cause an 'Organization:' line to be included in the
articles which skim creates for you. See RFC-1036 for the semantics of
this line.
7) Optionally set the environment variable TMPDIR in your .profile. Skim
will use this directory for temporary files. It defaults to /tmp.
8) Optionally set the environment variable SKIMPROCESSES in your .profile.
This variable determines the maximum number of concurrent processes that
talk to the NNTP server. The default is 4. Set it to a higher number if
you think this will improve the utilization of your dialup line. Set it
to a lower number (e.g. 1) when either your machine or the news server
is overloaded, or when your news server limits the maximum number of
concurrent connections per client IP address.
9) Optionally set the environment variable SKIMEDITOR in your .profile.
xskim will use this user-defined editor instead of the builtin editor
to edit new articles and replies. You can popup a graphical editor or
a terminal emulator window with a traditional character mode editor.
Some examples:
SKIMEDITOR="rxvt -e vi"; export SKIMEDITOR
SKIMEDITOR="xedit"; export SKIMEDITOR
You cannot open a character mode editor directly. E.g. the following
will not work
SKIMEDITOR="vi"; export SKIMEDITOR # Wrong!
The external editor will be called with exactly one argument: the
full path name of the article file. You should insure that your editor
does not create any other files in its current working directory.
10) Optionally create a .signature file in your home directory. Skim will
append it to all articles it constructs.
11) Optionally set the environment variable SKIMPATH in your .profile.
When skim constructs a new article or a reply, the value of SKIMPATH
is entered in the "Path:" header line. When SKIMPATH is not defined,
skim does not include a "Path:" header line. See RFC 1036 for the
semantics of this line. The use of SKIMPATH is not recommended,
since the "Path:" header line is best left to the news server.
12) Optionally set the environment variable SKIMLENGTHLINES. This
determines the number of digits in the "number of lines" column
in the header lines. The default value is 4. When the number of lines
will not fit (e.g. > 9,999), skim will display stars (*) in this
column. Don't change SKIMLENGTHLINES when there are existing files
in the $SKIMDIR/Subjects directory, since this will confuse skim.
13) Note: skip this step when this is the first time you use skim.
Optionally set the environment variable SKIMAUTOSUBJECT to
"CaseSensitive" or "CaseInsensitive" in you .profile. When this
variable is set, skim will automatically select and kill articles
by matching the Subject with regular expressions which you must define.
See the USER'S GUIDE section for details.
Optionally set the environment variable SKIMAUTOAUTHOR to
"CaseSensitive" or "CaseInsensitive" in you .profile. When this
variable is set, skim will automatically select and kill articles
by matching the Author with regular expressions which you must define.
See the USER'S GUIDE section for details.
Optionally set the environment variable SKIMLENGTHAUTHOR. This
determines the length of the Author column in the header lines.
The default value is 20. Skim will truncate Authors at this length
to preserve the tabular layout of the header lines. When you change
the length of the Author column, you may also have to change your
AutoSelect and Kill patterns for the Author field. Don't change
SKIMLENGTHAUTHOR when there are existing files in the
$SKIMDIR/Subjects directory, since this will confuse skim.
For example, my .profile contains:
export NNTPSERVER=news1.inter.nl.net
export SKIMDIR=~/News
export SKIMFROM="Rene Pijlman <R.W.Pijlman@inter.NL.net>"
export SKIMREPLYTO="R.W.Pijlman@inter.NL.net"
export SKIMAUTOSUBJECT="CaseInsensitive"
export SKIMAUTOAUTHOR="CaseSensitive"
export SKIMEDITOR="rxvt -e vi"
export M4PATH=$SKIMDIR/Patterns/CommonIncludeFiles
export PATH=/bin:/usr/bin:/usr/local/bin:$PATH
Logout and login again to initialize your window manager and shell with the
changes in .profile.
GETTING STARTED USING THE COMMAND LINE INTERFACE
Fire up your dial-up link, and try the command:
skim subjects
This may take a while, since skim creates it's directory structure, subscribes
you to a couple of default news groups, and fetches all 'Subject:' lines in
those news groups. Don't worry: once you're up-to-date in your newsgroups
skim will be much faster.
You may now disconnect your dial-up link.
The directory $SKIMDIR/Subjects should now contain one file per newsgroup
line with the article number, the author, the number of lines in the article
and the subject. For example:
- 55213 Rene Pijlman 69 Help! My CD-ROM doesn't work!!!
- 55215 BCHAMPOU@bcsc02.gov.bc.ca 37 Re: Help! My CD-ROM doesn't work!!!
- 55216 david guertin 15 Re: how to pronounce Linux?
- 55214 Steve Sampson 44 How to remove LILO from hard disk?
In the subject files, select articles by changing the '-' on the first position
to a '+'. Don't change the format of the file.
When you're done selecting articles, fire up your serial line and try the
command:
skim articles
You may now disconnect your dial-up link again.
The directory $SKIMDIR/Articles should now contain the articles you selected.
There is only one step left: edit the file $SKIMDIR/Admin/SubscribedNewsGroups.
Replace the default set of newsgroups with your own preferences. If you don't
know the names of all the newsgroups, use skim to retrieve a list from the news
server. See also the description of the command 'skim newsgroups' in the
USER'S GUIDE section.
The first time you run 'skim subjects' again, skim will fetch all 'Subject:'
lines in your groups. Skim will remember the current article number and will
fetch only the 'Subject:' lines of new articles in all subsequent 'skim
subjects' commands. This will make skim much faster.
GETTING STARTED USING THE GRAPHICAL INTERFACE
Fire up your dial-up link and start xskim. Press the button 'Subjects' in the
upper left corner.
Press the button 'Get New Subjects' in the lower right corner. This may take a
while, since skim creates it's directory structure, subsribes you to a couple
of default news groups, and fetches all 'Subject:' lines in those news groups.
Don't worry: once you're up-to-date in your newsgroups skim will be much
faster.
You may now disconnect your dial-up link.
Now you can select a newsgroup using the left mouse button, and select subjects
using the 'Select' button.
When you're done selecting articles, fire up your serial line and start xskim.
Press the button 'Get Selected Articles' in the lower right corner.
When xskim has fetched the Articles you may disconnect your dial-up link again.
Now you can select a newsgroup and an article using the left mouse button.
There is only one step left: edit the file $SKIMDIR/Admin/SubscribedNewsGroups.
This is currently not supported by the graphical interface, so you'll have
to use a text editor. Replace the default set of newsgroups with your own
preferences. If you don't know the names of all the newsgroups, use skim to
retrieve a list from the news server. See also the description of the
command 'skim newsgroups' in the USER'S GUIDE section.
The first time you fetch subjects again, xskim will fetch all 'Subject:'
lines in your groups. xskim will remember the current article number and will
fetch only the 'Subject:' lines of new articles in all subsequent 'skim
subjects' commands. This will make xskim much faster.
USER'S GUIDE
Retrieving the list of valid newsgroups from the server
-------------------------------------------------------
To retrieve the list of valid newsgroups, use the command:
skim newsgroups
The list will be placed in $SKIMDIR/Admin/AllNewsGroups. If there was an old
version of the list, it will be kept in AllNewsGroups.previous in the same
directory and a `diff' will be placed in AllNewsGroups.diff.
This is currently not supported by the graphical interface, so you'll have
to use the 'skim newsgroup' command.
Warning: the command 'skim newsgroups' typically requires a couple of minutes
to complete over a 14K4 line.
Subscribing to newsgroups
-------------------------
Edit $SKIMDIR/Admin/SubscribedNewsGroups. It must contain one newsgroup per
line. Lines with '#' on the first position are ignored. For example:
comp.os.linux.announce
comp.os.linux.answers
comp.os.linux.development.apps
comp.os.linux.development.system
comp.os.linux.hardware
comp.os.linux.misc
comp.os.linux.networking
comp.os.linux.setup
comp.os.linux.x
# comp.os.msdos.advocacy doesn't exist. Better not bring up the idea :-)
comp.unix.programmer
gnu.announce
news.announce.important
Fetching subjects
-----------------
Use the command:
skim subjects
Skim will contact the news server, and fetch the relevant header lines of the
articles in the groups in $SKIMDIR/Admin/SubscribedNewsGroups. The subject
lines are added to a per-newsgroup file in $SKIMDIR/Subjects.
Alternatively, you can use the graphical interface (xskim). Press the button
'Subjects' in the top line of xskim. Press the button 'Get New Subjects' in the
lower right corner. After xskim has finished fetching the subject lines you
will see a list of all newsgroups with new articles in the listbox just above
the button 'Get New Subjects'.
Skim sorts the header lines by subject (ignoring the 'Re:' prefix) to bring
related subjects together (pseudo-threading). Skim does not currently support
real threading based on the 'References:' header line.
Selecting articles
------------------
Edit the files in $SKIMDIR/Subjects. Select subjects by replacing the '-' on
the first position by a '+'.
Alternatively, you can use the graphical interface (xskim). The available
Subjects are divided in two groups: selected for retrieval and not selected
for retrieval. To move one or more articles to the other group, do the
following:
1) Press the left mouse button on an article, move the mouse to another
subject and unpress the left button.
2) Click the right mouse button or press the "Select" or "Unselect button.
Automatically select and kill subjects and authors
--------------------------------------------------
You can define regular expressions (patterns) to automatically select and kill
subjects and authors. This is best explained by an example. An AutoSelect file
for subjects in comp.os.linux.misc could contain the following patterns:
skim
^ann(oun)?ce:
When skim fetches a subject which contains the string "skim", or "ANNCE:" or
"Announce:" at the beginning of the line, it is automatically selected for
retrieval. You can still unselect the subject when you wish. When you use the
graphical interface, the automatically selected subjects appear in the
"Selected subjects" window.
For example, an AutoSelect file for authors can contain the following pattern:
^Arthur Dent$
For example, a Kill file for comp.os.linux.misc can contain the following
patterns:
dosemu
wine
remove lilo from (hard)? ?disk
When skim fetches the header line which matches any of these patterns, the
header line is ignored. It will not appear in the subjects file and it will
not be visible in the graphical interface.
I will not give an example of a kill file for authors, but I guess you can
think of some :-)
To have skim automatically select and kill subjects you must set the environment
variable SKIMAUTOSUBJECT to either "CaseSensitive" or "CaseInsensitive". When
you set it to CaseInsensitive, skim ignores case distinctions in both patterns
and subjects. The first time you start skim with this variable set, skim will
create the following directories:
$SKIMDIR/Patterns/Subject/AutoSelect
$SKIMDIR/Patterns/Subject/Kill
$SKIMDIR/Killed
These directories contain one file per newsgroup you are subscribed to. Edit
the files in $SKIMDIR/Patterns/Subject/AutoSelect and
$SKIMDIR/Patterns/Subject/Kill and add your patterns.
To have skim automatically select and kill authors you must set the environment
variable SKIMAUTOAUTHOR to either "CaseSensitive" or "CaseInsensitive". When
you set it to CaseInsensitive, skim ignores case distinctions in both patterns
and authors. The first time you start skim with this variable set, skim will
create the following directories:
$SKIMDIR/Patterns/Author/AutoSelect
$SKIMDIR/Patterns/Author/Kill
$SKIMDIR/Killed
These directories contain one file per newsgroup you are subscribed to. Edit
the files in $SKIMDIR/Patterns/Author/AutoSelect and
$SKIMDIR/Patterns/Author/Kill and add your patterns.
Please note that skim obtains the Author field by extracting the real name from
the `From' header field of the article. The following formats defined by
RFC-1036 are recognized:
1) email@subdomain.domain (Real Name)
2) Real Name <email@subdomain.domain>
3) email@subdomain.domain
In format 2, double quote characters (") are removed, since some posters
appear to use formats like:
4) "Real Name" <email@subdomain.domain>
A trailing string "()" is removed from the resulting Author field, since
some posters use formats like:
5) email@subdomain.domain ()
By default, skim truncates author names at 20 characters. You can change the
length of the Author column by setting the environment variable
SKIMLENGTHAUTHOR. When you change the length of the Author column, you may also
have to change your AutoSelect and Kill patterns for the Author field. Make
sure there are no files in $SKIMDIR/Subjects when you change the value of
SKIMLENGTHAUTHOR since the format of these files will change. Skim will
misbehave when it encounters files in $SKIMDIR/Subjects with a format which
is inconsistent with the current setting of SKIMLENGTHAUTHOR.
AutoSelect patterns take precedence over Kill patterns: when an AutoSelect
pattern is matched, the Kill patterns are ignored.
The subject lines which are automatically killed by skim are appended to the
files in $SKIMDIR/Killed, so you can review the effect of your kill patterns.
Note that skim never cleans up the files in $SKIMDIR/Killed automatically. See
also the section 'Cleaning up'.
The regular expressions recognized by skim are the POSIX Extended Regular
Expressions. You can find more information about regular expression matching
in the GNU info pages on 'regex'.
Note: When you use long and complicated expressions, skim may consume a large
amount of memory and CPU time when it fetches subjects from the news
server. In that case you should consider reducing the value of the
environment variable SKIMPROCESSES to reduce the overall load on your
machine.
To allow you to define expressions for multiple newsgroups, skim preprocesses
your pattern files with the m4 macro preprocessor. The default pattern files
created by Skim contains:
include(AllGroups)
Note: there must be no blanks between 'include' and '('.
By default, skim creates an empty 'AllGroups' file in the pattern directories.
Any pattern you enter in this file applies to all newsgroups. You can define
other include files for groups of newsgroups if you wish. For example, I have
created a pattern file called 'Linux' which is included in every Linux-related
newsgroup.
You can specify the location of your include files in one of three ways:
1) Use a path to specify the include file. For example:
include(/home/rene/skim_patterns/kill_msdos)
include(../../CommonIncludeFiles/kill_msdos)
2) Use only the file name. In that case the include file must be in the
same directory as the pattern file that includes it. You cannot use one
include file for both the Kill directory and the AutoSelect directory in
this way.
3) Set the environment variable M4PATH. m4 expects it to contain a colon-
separated list of directories, which will be searched in order.
When you want to preview the preprocessed pattern files, you should use the
following commands:
cd $SKIMDIR/Patterns/Subject/AutoSelect
m4 newsgroup
cd $SKIMDIR/Patterns/Subject/Kill
m4 newsgroup
cd $SKIMDIR/Patterns/Author/AutoSelect
m4 newsgroup
cd $SKIMDIR/Patterns/Author/Kill
m4 newsgroup
You can also use other features of the m4 preprocessor which you find useful.
Refer to the GNU info files for details.
Skim ignores empty lines and comment lines in the preprocessed pattern files.
Comments must start with '#' on the first position of the line.
Skim constructs one regular expression from all lines in a pattern file. For
example, a pattern file with the following regular expressions:
abc
# Comments here.
def
ghi
is equivalent to the following regular expression:
abc|def|ghi
Automatically retrieving all new articles in a newsgroup
--------------------------------------------------------
When you want to use skim to automatically retrieve all new articles in a
newsgroup, you should subscribe to that newsgroup (by inserting the newsgroup in
$SKIMDIR/Admin/SubscribedNewsGroups), enable automatic selection (by setting the
environment variable SKIMAUTOSUBJECT) and enter the following pattern in the
AutoSelect file ($SKIMDIR/Patterns/Subject/AutoSelect/<newsgroup>):
.*
All new articles in the newsgroup will be retrieve when you execute the
commands:
skim subjects
skim articles
The articles will be stored in $SKIMDIR/Articles.
These commands will also retrieve the subjects and the selected articles in all
other newsgroups you are subscribed to. When you want to avoid that, you should
create multiple skim directory structures by running skim with a different
value in the environment variable SKIMDIR. In every skim directory structure
you can subscribe to a different set of newsgroups.
Fetching articles
-----------------
Use the command:
skim articles
Skim will contact the news server, and fetch the complete articles which you
have selected in $SKIMDIR/Subjects.
The articles will be stored in per-article files in $SKIMDIR/Articles.
When you've read an article, you should use one of the following commands:
skim delete ArticleFile
skim keep ArticleFile
These commands move the article to $SKIMDIR/Deleted and $SKIMDIR/Kept
respectively and update skim's index files.
The subject lines which you did not select, are appended to the per-newsgroup
files in $SKIMDIR/Skipped. The subject files in $SKIMDIR/Subjects are removed.
Alternatively, you can use the graphical interface (xskim). Press the button
'Articles' on the top line. Press the button 'Get Selected Articles' in the
lower right corner to execute 'skim articles'. When xskim has finished fetching
the selected articles, you can select a newsgroup in the listbox. Xskim will
present a list of the subject lines of all available articles in the newsgroup.
Select a subject line to view the article. When you've read an article, you
should press the 'Delete Article' button or the 'Keep Article' button.
Note that skim never cleans up the files in $SKIMDIR/Skipped and
$SKIMDIR/Deleted automatically. See also the section 'Cleaning up'.
Skim never removes files from $SKIMDIR/Kept. This is a historical archive of
the articles which you've decided to keep.
Replying to articles
--------------------
When you want to reply to an article in $SKIMDIR/Articles, use the command:
skim replyto ArticleFile
I reply to articles by typing "vi *" in $SKIMDIR/Articles, and within vi
give the command ":! skim replyto %".
On the commandline you should provide only the filename. Skim will prepend
$SKIMDIR/Articles to the filename. The reply will be placed in $SKIMDIR/Post
for editing. Be carefull with the syntax of the header.
Alternatively, you can use the graphical interface (xskim). When you have
selected an article, press the button 'Reply' on the bottom line. This will
execute 'skim replyto ArticleFile' and present the reply using either the
builtin editor of xskim or the editor that you've specified in the environment
variable SKIMEDITOR.
If you have written a reply to a specific article and select this article
later on, you'll see a label 'Reply exists' in the bottom line. If you now
press 'Reply', xskim won't create a new reply file, but opens the old one so
you can edit the file once again before posting it. You can also delete it, if
you don't want to reply anymore.
Skim uses the following information to construct the reply:
- Various header lines of the original article.
- The environment variable SKIMFROM.
- The environment variable SKIMFREPLYTO (optional).
- The output of hostname(1).
- The body of the original article.
- Your ~/.signature, if it exists.
Skim will take care of the 'Subject:' and 'References:' requirements in
RFC-1036.
Creating a new article
----------------------
To create a new article, use the command:
skim newarticle
Skim will prompt you for a filename, the subject, and a list of newsgroups
this article is to be posted to. Skim also uses the following information:
- The environment variable SKIMFROM.
- The environment variable SKIMREPLYTO (optional).
- The output of hostname(1).
- Your ~/.signature, if it exists.
The article will be placed in $SKIMDIR/Post for editing. Be carefull with the
syntax of the header.
You may also provide the required information on the command line. In that case
skim will not prompt you interactively. The syntax is:
skim Filename NewsGroups Subject
For example:
skim newarticle RemoveLilo comp.os.linux.setup,comp.os.linux.misc \
"How to remove LILO from hard disk?"
Alternatively, you can use the graphical interface (xskim). Press the button
'New' on the top line. A new window will be displayed and you're asked to type
the name of the local file to create, the list of newsgroups to post to and the
subject line of your article. When you specify all of this information, xskim
will present your new article using the builtin text editor of xskim or in the
editor that you've specified in the environment variable SKIMEDITOR. When you
don't specify all of the information required by xskim, xskim will not create
a new article.
Posting articles
----------------
There are two commands for posting articles:
skim post ArticleFile ...
skim postall
The first command will post the specified articles in $SKIMDIR/Post. The second
command will post all articles in $SKIMDIR/Post. Please make sure that you have
finalized your articles before posting.
When skim posts an article, it will automatically update some headerlines
("Date:" and "Lines:"), it fixes some headerlines that you may have damaged
(e.g. "From:") and it rejects an article when a mandatory headerline is missing
(e.g. "Subject:").
The articles which were posted successfully are moved to $SKIMDIR/Posted.
The article which is kept in $SKIMDIR/posted is an exact copy of the article
that was posted by skim. Skim will never remove articles from $SKIMDIR/Posted.
This is a historical archive of your articles.
Alternatively, you can use the graphical interface (xskim). To post all
articles in $SKIMDIR/Post, press the button 'Postall' on the top line. To
post a specific article, press 'Post' on the top line, and select the
article you want to post.
If you want to edit your article before posting, press 'Open Article' and select
the file you want to edit. If you want to delete one of your articles, press
'Delete Outgoing Article' in the top line and select the article file.
Cleaning up
-----------
Skim accumulates information in the following directories:
- $SKIMDIR/Skipped
- $SKIMDIR/Killed
- $SKIMDIR/Deleted
You should regularly remove the files in these directories by executing the
command:
skim cleanup
Alternatively, you can use the graphical interface (xskim). Press the button
'Cleanup' in the top line to execute 'skim cleanup'.
Skim also accumulates information in the directory $SKIMDIR/Kept. This is a
historical archive in the articles that you have decided to keep. Skim never
removes articles from this directory.
The text editor in xskim
------------------------
The text editor in xskim is used for viewing articles, creating new articles,
and replying to articles. The editing aktions which are supported are
documented in the BINDINGS section of the text(3) manual page that comes with
Tk.
The most important editing aktions are:
- Pressing mouse button 1 positions the insertion cursor.
- Dragging mouse button 1 selects characters.
- The view in the text can be adjusted with mouse button 2 (horizontal
and vertical scrolling).
- Control+v inserts the current selection just before the insertion
cursor.
- Control+d deletes the selected characters.